package 正则表达式学习;
/*
* /*正则表达式常用知识
* 用途三种：验证 解析 文本处理
*[abc]  a b c 的任意一个字符
*[^abc]  除了abc的任意一个字符
* [a-zA-Z]   任意英文字符,[A-Za-z]这种方法的正确性有待自己验证
* [abc[hij]] 两个的并集
* [a-z&&[hij]] 任意h、i或j(交集)
*\s 空白符（空格 tab 换行 或回车）
* \S 非空白符 [^\s]
*\d 数字[0-9]
* \D 非数字[^0-9]
* \w 单词字符（数字【0-9】、26个英文字母、下划线）
*.除换行符\n之外的任何一个字符（要匹配“.”字符本身请用“\.”）
* \\反斜线字符
//*  hhhh 十六进制表示的Unicode字符值为hhhh的字符
* */

public class H {
    public static void main(String[] args) {
        System.out.println("aaa".matches("a*"));
        System.out.println("aaaa".matches("a+"));
        System.out.println("aaa".matches("a?"));
        System.out.println("aaa".matches("a{3}"));
        System.out.println("aaa".matches("a{1,}"));
        System.out.println("aaa".matches("a{1,2}"));
//        注意把 abcadcabcabc放进去试一下
        System.out.println("abcabcabcabc".matches("(abc){2,4}"));
//        汉字的匹配 ，哟用一下
        System.out.println("------------------------------------------");
        System.out.println("博科".matches("[\\u4e00-\\u9fa5]+"));
//        ip地址的匹配(\d{1,3}\.){3}\d{1,3}
        System.out.println("ip地址的匹配");
        System.out.println("114.115.209.166".matches("(\\d{1,3}\\.){3}\\d{1,3}"));
        
//        压缩字符串s为abcd123+*.*4
        String s="aaaabbbbccccdddd1112222333++...***444";
        String rs=s.replaceAll("(.)(\\1)*","$1");
       /*
       (.)表示一号组，匹配任何一个字符，\1表示与一号组相同的字符，$1表示在replaceAll()方法中
           与一号组相匹配的那个字符串
               */
        System.out.println("匹配后的结果为："+rs);
        System.out.println(s.matches("(.)(\1)*"));
        
    }
}
